package com.ericsson.common.quartz.service;

import com.ericsson.enap.modules.monitor.entity.EpcCron;
import com.ericsson.enap.modules.monitor.service.IEpcCronService;
import org.quartz.SchedulerException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class QuartzTableService {

    @Autowired
    QuartzTableManager quartzTableManager;
    @Autowired
    IEpcCronService epcCronService;
    @Value("${collectorIp}")
    private String collectorIp;



    public void update(Long id, String status) throws Exception {
        //判断是否有此ID的数据
        EpcCron config = epcCronService.selectEpcCronById(id);
        if (config == null) {
            new RuntimeException("未找到此定时任务");
        }
        if ("0".equals(status)) {
            // stop 禁用
            quartzTableManager.deleteJob(config);
        } else {
            //start 启用
            quartzTableManager.addJob(config);
        }
    }

    /**
     * 启动所有的任务
     *
     * @return: void
     */
    public void startJobs() {
        EpcCron epcCron = new EpcCron();
        epcCron.setCollectorIp(collectorIp);
        List<EpcCron> configList = epcCronService.selectEpcCronList(epcCron);
        for (EpcCron config : configList) {
            if ("1".equals(config.getStatus())) {
                try {
                    quartzTableManager.addJob(config);
                } catch (SchedulerException e) {
                    e.printStackTrace();
                }
            }
        }
    }

    /**
     * 修改cron表达式
     *
     * @param id
     * @param cronSchedule
     */
   /* public void updateCron(Long id, String cronSchedule) {
        int i = configRepository.setScheduleById(cronSchedule, id);
        if (i <= 0) {
            throw new RuntimeException("500!");
        }
    }

    public void save(Config config) {
        try {
            configRepository.save(config);
            if (config.getStatus().equals(ConfigEnum.STATUS_START.getCode())){
                quartzTableManager.addJob(config);
            }
        } catch (SchedulerException e) {
            e.printStackTrace();
        }
    }*/
}
